Robot and other multi-axis manipulator systems are used in an increasing number of industrial and commercial applications to perform precise and repetitive movements with a minimum of human intervention. For example, robots are used to apply spray paint to automobile door panels, to weld components together, to abrade material from workpieces and to apply sealant to joints. Properly programmed robots are highly repeatable and reliable.
Robot systems typically include a robot and a computer-based controller. Commonly used six-axis industrial robots include an arm assembly having one end mounted to a base, and a wrist on the opposite end. A grasping mechanism configured to receive the tool or other workpiece to be moved by the robot is mounted to the wrist. The grasping mechanism and workpiece, or whatever devices are mounted to the robot wrist, are together known generally as an end effector.
The robot arm assembly can be driven about waist, shoulder and elbow axes (representing three degrees of freedom) to position the wrist and end effector at any desired position within the operating range of the robot. These positions can be specified in terms of the positions of the end effector on each of the three-dimensional x, y and z axes of a robot cartesian coordinate system (i.e., [P.sub.x, P.sub.y, P.sub.z ]). For some robotic applications, specifying only the position of the end effector is sufficient to enable the robot to perform a desired operation. For other robotic applications, however, both the position and the orientation of the end effector are important. Thus, at each position the robot wrist can be rotated about orthogonal x, y and z axes (representing an additional three degrees of freedom) to orient the end effector at desired orientations within the wrist range of motion. The orientation of the end effector can be specified in terms of the extent of the angular rotation of the wrist on each of the three axes (i.e., [.theta..sub.x, .theta..sub.y, .theta..sub.z ]). The position and orientation of the end effector at any point within the operating range of the robot can therefore be described in terms of its position and orientation in the robot coordinate system (i.e., [p.sub.x, p.sub.y, p.sub.z, .theta..sub.x, .theta..sub.y, .theta..sub.z ].sub.robot).
The computer-based robot system controller is programmed with a robot drive program. When executed by the controller, motion-control program segments of the drive program cause the robot arm assembly and wrist to drive the end effector through a predetermined or desired path of motion with respect to a workstation. In abrasive applications, for example, the robot will typically drive the workpiece (e.g., a turbine blade, golf club head or other part) with respect to a fixed backstand that supports a moving wheel, belt or other abrasive product. Responsive to the robot drive program, the robot drives the workpiece through the desired path of motion to abrade the workpiece with the abrasive product in the desired manner. In other applications, including abrasive applications, the robot drives a tool or other end effector through a desired path of motion with respect to a fixed workpiece or other workstation.
The controller may also be programmed to control other application parameters in synchronization with the path of motion. Examples of such path-synchronized parameters include the actuation of a welder in robotic welding applications and the actuation of a paint sprayer in robotic painting applications. In the robotic abrasive application described above, the backstand can include a pneumatic cylinder or other force actuator for controllably forcing the abrasive product into engagement with the workpiece. Force-control program statements or segments in the robot drive program are executed by the controller to activate the force actuator (either constantly or variably) as the workpiece is driven through the desired path of motion. Other systems include a separate computer for executing force-control segments that are indexed to or otherwise synchronized with the motion-control program segments.
The robot system controller must be programmed with the motion-control or force-control program segments, or both. A number of known programming techniques are typically used for this purpose, including the teach pendant, lead-through, kinematic model and computer simulation methods.
The teach pendant programming method is disclosed generally in the U.S. Pat. No. 4,589,810 (Heindl et al.). This "on-line" programming approach makes use of the robot to be programmed and a technician-actuated interface including a joystick andr switches coupled to the robot controller. Using the interface, the technician will actuate the robot and move the end effector through a programming path of motion with respect to the workstation. The points taught during programming will correspond to the desired path of motion. At a selected series of programming points along the programming path of motion, the technician actuates the interface and causes the controller to store programming path point data characterizing the position and orientation of the end effector at each of the programming points. Motion-control program segment generation software run by the controller then uses the programming path point data to generate the motion-control program segments included in the drive program. When the drive program is executed by the controller, the motion-control program segments will cause the robot to drive the end effector smoothly through the programming path points along the desired path of motion. The technician will typically select the programming path points through direct visual observation or feedback of the positions of the end effector with respect to the workstation. Unfortunately, the teach pendant programming method can be relatively slow and inefficient. Furthermore, because it is performed on-line with the actual robot to be programmed, the teach pendant programming method results in robot down time and associated productivity losses.
Lead-through robot programming is disclosed generally in the U.S. Pat. No. 4,408,286 (Kikuchi et al.). This programming method is similar to the teach pendant method described above in that the robot is moved through a programming path of motion to selected programming path points, and the motion-control program segments are generated using the programming point data. Rather than using a remotely located interface device to move the robot to the programming path points, however, the technician will actuate a force sensor or other control mechanism on the robot (typically on the end effector) to move the robot to the programming path points. Because these lead-through programming methods require the technician to be in close proximity to the robot, they are typically not used with heavy or high-powered robots.
Kinematic programming methods offer some of the advantages of lead-through programming methods, but do not require the technician to be in close physical proximity to the robot while it is being programmed. These methods make use of a relatively lightweight robot model or teaching arm having the same kinematic design as the robot being programmed. The teaching arm is then positioned at the same position with respect to the workpiece as the robot being programmed, or at the same relative position with respect to a model or duplicate of the workstation. During use, the teaching arm is moved by hand through a programming path of motion that corresponds to the desired path of motion. Encoders on the teaching arm monitor the relative positions of the arm sections with respect to one another as the arm is moved through the programming path of motion. The robot controller then generates motion-control program segments that duplicate the relative positions monitored by the encoders. These programming methods are robot-specific, however, because they require a separate arm for each type of robot being programmed. They also typically require a duplicate workspace because it usually impractical to substitute the teaching arm for the actual robot being programmed.
Computer graphical off-line robot simulation and programming methods are also known. These programming methods make use of robot simulation software that includes graphical and mathematical models of the robot, its end effector and the workstation. The simulation software is typically run on computer workstations coupled to a monitor, and generates simulated three-dimensional graphical video images of the robot driving the end effector with respect to the workstation. Graphics such as cartesian coordinates and text displayed on the monitor also mathematically describe the positions of the end effector with respect to the workstation represented by the graphical images. Using a mouse and keyboard, the technician interactively interfaces with the software to move the image of the end effector or vector tag points to the selected programming path points with respect to the image of the workstation. The simulation software includes motion-control program segment generation software capable of generating the robot drive programs from the selected programming path points. By observing the simulated graphical image of the robot driving the end effector through the programmed path of motion, and interfacing with the simulation software through the mouse or keyboard, the technician can also optimize the motion-control program. Other functions available from the simulation software include out-of-range checking and collision checking. Simulation software of this type is commercially available from a number of software vendors, including Deneb Robotics Inc. of Auburn Hills, Mich. The IGRIP software package available from Deneb Robotics is one example of such simulation software. Although these off-line simulation and programming methods reduce the amount of down time required to program the robot, they can be slow and inefficient to use. It is also difficult to accurately program a robot to move about a desired three-dimensional path using these tools.
Force-control program segments used in conjunction with abrasive robot applications of the type discussed above are typically generated by the robot controller or other control computer from programming force point data. While using teach pendant, lead-through or other known programming methods to move the robot to the programming path points, the technician will simultaneously and manually enter programming force point data through the controller interface. The force point data is data representative of the desired forces to be exerted by the force actuator while the end effector is at the corresponding programming path points. Force-control program segment generation software run by the robot controller generates the force-control program segments using the programming force points. When executed by the controller, the force-control program segments will cause the robot to drive the force actuator through the programming force points and desired force regime.
It is evident that there is a continuing need for improved robot programming systems. In particular, there is a need for improved on-line and off-line programming methods that minimize the amount of robot down time and associated lost productivity. The robot programming methods should be capable of efficiently and accurately generating and optimizing motion-control programs. Programming methods of this type capable of efficiently and accurately generating force-control and other path-synchronized data would also be useful.